HA$PBExportHeader$uo_logger.sru
$PBExportComments$Objeto destinado a guardar log de los eventos del sistema
forward
global type uo_logger from nonvisualobject
end type
end forward

global type uo_logger from nonvisualobject
end type
global uo_logger uo_logger

type variables
string is_directorio
int ii_FileNum
uo_rutas iuo_directorio
long il_num_log=0
datetime fecha_sistema
end variables

forward prototypes
public function integer agregar_linea (string nombre_clase, string mensaje_error)
public function string of_reemplazar_char (string cadena, string char_a_remplazar, string char_reemplazo)
public function integer inicializar ()
public function integer agregar_linea (string as_texto)
end prototypes

public function integer agregar_linea (string nombre_clase, string mensaje_error);exception ex
ex=create exception

fecha_sistema = datetime(date(today()),time(now()))
FileWrite(ii_FileNum, "Fecha:" + string(fecha_sistema) +" " + "Usuario: " + sqlca.logid +&
                      "--> Clase: "+nombre_clase +& 
                         " Error: " + mensaje_error)

return 1
end function

public function string of_reemplazar_char (string cadena, string char_a_remplazar, string char_reemplazo);//variables
int start_pos=1,len_char_a_remplazar

len_char_a_remplazar = len(char_a_remplazar)
//find the first occurrence of char_a_remplazar ...
start_pos = Pos(cadena,char_a_remplazar,start_pos)
//only enter the loop if you find whats in char_a_remplazar
DO WHILE start_pos > 0
//replace char_a_remplazar with char_reemplazo ...
cadena = Replace(cadena,start_pos,Len_char_a_remplazar,char_reemplazo)
//find the next occurrence of char_a_remplazar
start_pos = Pos(cadena,char_a_remplazar,start_pos+Len(char_reemplazo))
LOOP

return cadena 
end function

public function integer inicializar ();
string sintaxis,comando,ls_param1,ls_param2,ls_param3,ls_directorio_bat,ls_discriminador,ls_ruta
int li_retu
exception ex
ex= create exception
//tratamiento de la fecha y hora
datetime feregistro

feregistro = datetime(date(today()),time(now()))
//feregistro = date(today())
//select getdate() into :feregistro from empresas;
ls_discriminador=string(feregistro)
//quito las barras porque son caracteres no v$$HEX1$$e100$$ENDHEX$$lidos
ls_discriminador=of_reemplazar_char(ls_discriminador,"/","_")
//quito los dos puntos porque son caracteres invalidos
ls_discriminador=of_reemplazar_char(ls_discriminador,":","-")
//quito los espacios en blanco
ls_discriminador=of_reemplazar_char(ls_discriminador," ","_")
iuo_directorio=create uo_rutas
ls_ruta = "..\\RecursosApp.INI"
is_directorio =  ProfileString(ls_ruta , "ruta", "logpath", "") //iuo_directorio.of_ini( gs_rutaApp+'\siscom.ini', 'log', 'logpath')
ls_directorio_bat= ProfileString(ls_ruta , "ruta", "logbat ", "") //iuo_directorio.of_ini( gs_rutaApp+'\siscom.ini', 'log', 'logbat')
ls_param1="__VGM_LOG__" + ls_discriminador
//ls_param2=">"
//incremento en uno para un nuevo archivo log
il_num_log= il_num_log + 1
ls_param3=is_directorio + "VGMlog-" + ls_discriminador+".log"
sintaxis = 'logger.bat'+' ' + ls_param1 +' ' + ls_param3
comando = ls_directorio_bat + sintaxis 

run(comando)

// Comprimo con uo_syncproc (el script espera hasta que se cierra la ventana DOS)
//uo_syncproc luo_sync
//luo_sync = CREATE uo_syncproc
//luo_sync.of_setwindow('minimize')
//li_retu = luo_sync.of_RunAndWait(comando)
//if li_retu <> 1 THEN
//	messagebox('Recepci$$HEX1$$f300$$ENDHEX$$n', 'Problemas en la creaci$$HEX1$$f300$$ENDHEX$$n del archivo ')
//	return -1
//END IF
//DESTROY luo_sync 
//


ii_FileNum = FileOpen( ls_param3, LineMode!, Write!, LockWrite!, Append! )
if ii_FileNum=-1 then
//	ex.setmessage( "Problema de Apertura del Archvio")
////	throw ex
end if
	
return 1



end function

public function integer agregar_linea (string as_texto);exception ex
ex=create exception

fecha_sistema = datetime(date(today()),time(now()))
FileWrite(ii_FileNum, "Fecha:" + string(fecha_sistema) +" " + "Usuario: " + sqlca.logid + "--> " + as_texto)

return 1
end function

on uo_logger.create
call super::create
TriggerEvent( this, "constructor" )
end on

on uo_logger.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on

event constructor;INIcializar( )
end event

